#include <spdlog/common.h>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/async.h>


std::shared_ptr<spdlog::logger> g_default_logger;
void init_logger(bool mode,const std::string &file,int32_t level)
{
    if(mode==false)
    {
        //调试模式,创建标准输出日志器，输出等级最低
        g_default_logger=spdlog::stdout_color_mt("default-logger");
        g_default_logger->set_level(spdlog::level::level_enum::trace);
        g_default_logger->flush_on(spdlog::level::level_enum::trace);
    }
    else 
    {
        //发布模式,创建异步日志器，输出等级最低
        g_default_logger=spdlog::basic_logger_mt("default-logger", file);
        g_default_logger->set_level((spdlog::level::level_enum)level);
        g_default_logger->flush_on((spdlog::level::level_enum)level);
    }
    g_default_logger->set_pattern("[%n]{%H:%M:%S][%t][%-8]%V");
}
#define LOG_TRACE(format,...)bite_im::g_default_logger->trace(std::string("[{}:{}]")+format,__FILE__,__LINE,##VA_ARGS__)
#define LOG_DEBUG(format,...)bite_im::g_default_logger->trace(std::string("[{}:{}]")+format,__FILE__,__LINE,##VA_ARGS__)
#define LOG_INFO(format,...)bite_im::g_default_logger->trace(std::string("[{}:{}]")+format,__FILE__,__LINE,##VA_ARGS__)
#define LOG_WARN(format,...)bite_im::g_default_logger->trace(std::string("[{}:{}]")+format,__FILE__,__LINE,##VA_ARGS__)
#define LOG_ERROR(format,...)bite_im::g_default_logger->trace(std::string("[{}:{}]")+format,__FILE__,__LINE,##VA_ARGS__)
#define LOG_FATAL(format,...)bite_im::g_default_logger->trace(std::string("[{}:{}]")+format,__FILE__,__LINE,##VA_ARGS__)


